

package tables

import (
	"fmt"
	"game/game-design/loader"
	"strings"
	ministruct "sanguo/sanguo-design/src/ministruct"
)


var LanguageNameTable *LanguageNameTableStruct = &LanguageNameTableStruct{}

type LanguageNameTableStruct struct {
	loader.DesignTable[LanguageNameCfg]
	
	
	nameTypeCollector map[string][]*LanguageNameCfg
	
	
}

func (t *LanguageNameTableStruct) FileName() string {
	return "Lang随机名字"
}


// 从容器索引中获取对象，获取不到会抛异常
func (t *LanguageNameTableStruct) GetInNameTypeCollector(
	nameType int32,
) []*LanguageNameCfg {
	key :=
		fmt.Sprint(nameType)
	
	cfg, ok := t.nameTypeCollector[key]
	if !ok {
		panic("LanguageNameTable when GetInNameTypeCollector use key not found " + key)
	}
	return cfg
}

// 从容器索引中查找对象，获取不到会返回null
func (t *LanguageNameTableStruct) FindInNameTypeCollector(
	nameType int32,
) ([]*LanguageNameCfg, bool) {
	key :=
		fmt.Sprint(nameType)
	
	cfg, ok := t.nameTypeCollector[key]
	return cfg, ok
}

// 加载nameTypeCollector容器索引
func (t *LanguageNameTableStruct) loadNameTypeCollector() {
	nameTypeCollector := make(map[string][]*LanguageNameCfg)
	for _, v := range t.All() {
		keys := []string {
			fmt.Sprint(v.nameType),
		}
		key := strings.Join(keys, "_")
		nameTypeCollector[key] = append(nameTypeCollector[key], v)
	}
	t.nameTypeCollector = nameTypeCollector
}


func (t *LanguageNameTableStruct) LoadAutoGenerate() {

	//加载容器索引
	t.loadNameTypeCollector()
	
}



type LanguageNameCfg struct {
	id int32 //ID
	nameType int32 //类型
	cn string //中文名称
	tw string //台湾繁体
	hk string //香港繁体
	en string //英文
}
// ID
func (c *LanguageNameCfg) GetId() int32 {
	return c.id
}
// 类型
func (c *LanguageNameCfg) GetNameType() int32 {
	return c.nameType
}
// 中文名称
func (c *LanguageNameCfg) GetCn() string {
	return c.cn
}
// 台湾繁体
func (c *LanguageNameCfg) GetTw() string {
	return c.tw
}
// 香港繁体
func (c *LanguageNameCfg) GetHk() string {
	return c.hk
}
// 英文
func (c *LanguageNameCfg) GetEn() string {
	return c.en
}

func LanguageNameTableStructNoUse() {
	fmt.Println(ministruct.Cost{})
}
